This invention relates generally to methods and systems for creating and using so-called skins.
Many software applications provide a user with the ability to interact with the application in some manner. The mechanism by which a user is permitted to interact with a software application is called a user interface or xe2x80x9cUIxe2x80x9d. User interfaces typically provide controls or buttons that can be engaged by a user to cause a predetermined result. For example, a user might use their mouse to click on a button that minimizes or enlarges a particular UI. Alternately, a software application such as a media player may have several buttons that permit a user to play, pause, fast-forward, reverse, and control the volume of a particular piece of media that is playing on their computer.
UIs have, in the past, been generally fixed insofar as their layout and functionality is concerned. One primary reason for this stems from the desire to impart standardization to various UIs. Yet, against the backdrop of standardized UIs, there began to surface concerns associated with providing the ability to impart a different look to various UIs. For example, original equipment manufacturers who produced particular software applications using a predefined platform wanted the capability of xe2x80x9cbrandingxe2x80x9d their product. To meet these and other concerns so-called xe2x80x9cskinsxe2x80x9d or skinning models began to surface
Conventional skinning models provide the user or designer with an opportunity to change the look of a particular UI. They do so by providing a skin that serves as the visual portion of the UIxe2x80x94that is, the portion that the user sees when they interact with an application. In the past, and indeed the present, skin providers have been limited in the flexibility with which they can provide their skins. Specifically, skin providers have only been able to change the look of the UI, and have not been able to change the layout or functionality of the UI.
FIG. 1 shows a few exemplary skins, generally at 10 and 12, that are associated with a software application that provides functionality associated with an equalizer such as one would find on a stereo player. Notice that the look of the skins is different, but their layout and functionality is the same. Specifically, each skin has seven buttons and each button is associated with a setting from between 80 to 12K. The button, here in the form of a slider, can be adjusted up and down to vary each individual setting. The difference in the appearance or look of each skin is effected by using a different static bitmap to render the skin. Specifically to render skin 10, a first bitmap is used; and, to render skin 12 a second bitmap is used. Using static bitmaps to change the appearance of skins is a small step toward providing a unique user experience, but falls far short of providing a truly robust, flexible and rich user experience.
Accordingly, the invention arose out of concerns associated with providing improved skinning models and methods that provide a truly robust, flexible and rich user experience.
Methods and systems for creating and rendering skins are described. In one described embodiment skins can be defined as sets of script files, art files, media files, and text files. These files can be used to create new and different skin appearances, layouts and functionalities. The files can be organized for use using an XML data structure. The data structure is processed to provide an object model. The object model can be a scriptable object model that enables script to execute to provide an interactive, dynamic skin that can respond to internal and external events. In one embodiment, a computer architecture used for rendering the skin includes a layout manager that processes an intermediate representation of the XML data structure to provide the scriptable object model. Components of the scriptable object model can include a script engine for receiving and executing script, and one or more rendering elements. Each rendering element represents a different skin element and can be individually configured to respond to script via the script engine. The inventive systems and techniques can provide a robust, dynamic skin that can be rendered and re-rendered at runtime.